package br.com.hsp.system.beans;

import java.util.List;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletRequest;

import br.com.hsp.organizacao.Cartao;
import br.com.hsp.system.repository.CartaoRepository;
import br.com.hsp.system.repository.PacienteRepository;
import br.com.hsp.users.Paciente;

@ManagedBean
public class CartaoBean {

	private Cartao cartao = new Cartao();
	private Paciente paciente = new Paciente();
	private String pacienteCPF;
	private List<Cartao> cartoes;

	public void gerarCartao() {
		Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
		pacienteCPF = params.get("pacienteCPF");
		System.out.println(pacienteCPF);
		EntityManager manager = this.getManager();
		PacienteRepository pacienteRepository = new PacienteRepository(manager);
		CartaoRepository cartaoRepository = new CartaoRepository(manager);
		if (/*this.paciente.getId() != null*/!pacienteCPF.isEmpty()) {
			//paciente = pacienteRepository.procura(this.paciente.getId());
			this.paciente = pacienteRepository.procuraCPF(pacienteCPF);
			
			if (this.paciente.getCartao() == null) {
				String codigo = "p" + this.paciente.getId() + "001";
				this.cartao.setCodigo_cartao(codigo);
				cartaoRepository.add(this.cartao);
				this.paciente.setCartao(this.cartao);
				pacienteRepository.atualiza(this.paciente);

			} else {
				String codigo = "p" + this.paciente.getId() + "002";
				this.cartao.setCodigo_cartao(codigo);
				cartaoRepository.add(this.cartao);
				this.paciente.setCartao(this.cartao);
				pacienteRepository.atualiza(this.paciente);
			}
		}

		this.paciente = new Paciente();
		this.cartao = new Cartao();
		this.pacienteCPF = null;
	}

	private EntityManager getManager() {
		FacesContext fc = FacesContext.getCurrentInstance();
		ExternalContext ec = fc.getExternalContext();
		HttpServletRequest request = (HttpServletRequest) ec.getRequest();
		return (EntityManager) request.getAttribute("EntityManager");

	}

	public Cartao getCartao() {
		return cartao;
	}

	public void setCartao(Cartao cartao) {
		this.cartao = cartao;
	}

	public Paciente getPaciente() {
		return paciente;
	}

	public void setPaciente(Paciente paciente) {
		this.paciente = paciente;
	}

	public List<Cartao> getCartoes() {
		return cartoes;
	}

	public void setCartoes(List<Cartao> cartoes) {
		this.cartoes = cartoes;
	}

	public String getPacienteCPF() {
		return pacienteCPF;
	}

	public void setPacienteCPF(String pacienteCPF) {
		this.pacienteCPF = pacienteCPF;
	}

}
